Explicit vector programming has become one of the most effective methods to access the full processing capabilities of single instruction, multiple data (SIMD) computer architectures. Some optimizing compilers may analyze source code to identify a loop of scalar functions and vectorize the loop such that, when the resulting executable code is executed by a compute device, multiple iterations of the loop are performed concurrently by the compute device, even in the presence of function calls inside the loop. The above process works when the identities of the functions in the loop can be determined at compile time. However, some programming languages, such as C and C++, enable indirect calls to functions, such that the identities of the functions are not defined until run time. Known compilers do not vectorize these indirect function calls. Rather, they cause each scalar function to be called sequentially and do not take advantage of the concurrent processing capabilities of the compute device in these cases.